TOP

SQL TOP, LIMIT, FETCH FIRST и ROWNUM

SQL SELECT TOP Описание

Выражение SELECT TOP используется для определения количества записей при выборке.

SQL SELECT TOP полезен для больших таблиц с тысячами записей, поскольку возврат большого количества записей может повлиять на производительность системы.


Не все системы баз данных поддерживают выражение SELECT TOP. MySQL поддерживает выражение LIMIT для выбора ограниченного количества записей, тогда как Oracle использует FETCH FIRST n ROWS ONLY и ROWNUM.

SQL Server / MS Access Синтаксис:

SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition

MySQL Синтаксис:

SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number

Oracle 12 Синтаксис:

SELECT column_name(s)
FROM table_name
ORDER BY column_name(s)
FETCH FIRST number ROWS ONLY

Устаревший Oracle Синтаксис:

SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number

Устаревший Oracle Синтаксис (with ORDER BY):

SELECT *
FROM (SELECT column_name(s) FROM table_name ORDER BY column_name(s))
WHERE ROWNUM <= number

Демонстрационная база данных

Ниже приведена выборка из таблицы "Customers" ("Клиенты") базы данных "Northwind":

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

SQL TOP, LIMIT and FETCH FIRST Примеры

Следующая инструкция SQL выбирает первые три записи из таблицы "Customers" (для SQL Server/MS Access):

SELECT TOP 3 * 
FROM Customers

Следующая инструкция SQL показывает эквивалентный пример для MySQL:

Run SQLSELECT * 
FROM Customers 
LIMIT 3

Следующая инструкция SQL показывает эквивалентный пример для Oracle:

SELECT * 
FROM Customers 
FETCH FIRST 3 ROWS ONLY

SQL TOP PERCENT Пример

Следующая инструкция SQL выбирает первые 50% записей из таблицы "Customers" (для SQL Server/MS Access):

SELECT TOP 50 PERCENT * 
FROM Customers

Следующая инструкция SQL показывает эквивалентный пример для Oracle:

SELECT * 
FROM Customers 
FETCH FIRST 50 PERCENT ROWS ONLY

Использование выражения WHERE

Следующая инструкция SQL выбирает первые три записи из таблицы "Customers", где страной является "Germany" (для SQL Server/MS Access):

SELECT TOP 3 * 
FROM Customers 
WHERE Country = 'Germany'

Следующая инструкция SQL показывает эквивалентный пример для MySQL:

Run SQLSELECT * 
FROM Customers 
WHERE Country = 'Germany' 
LIMIT 3

Следующая инструкция SQL показывает эквивалентный пример для Oracle:

SELECT * 
FROM Customers 
WHERE Country = 'Germany' 
FETCH FIRST 3 ROWS ONLY